From 0dbd0848995e81208a08cb18e1c636081c5ab90f Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Fri, 1 Apr 2005 07:59:40 +0000 Subject: [PATCH] bitkeeper revision 1.1159.258.86 (424cff6c82IPl2w_FuJj_0tdGUdFiw) Correctly account for our reference to plugged_queue in blkback. Signed-off-by: Keir Fraser --- .../drivers/xen/blkback/blkback.c | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c b/linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c index be250a4bf3..375377b138 100644 --- a/linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c +++ b/linux-2.6.11-xen-sparse/drivers/xen/blkback/blkback.c @@ -68,10 +68,16 @@ static PEND_RING_IDX pending_prod, pending_cons; static kmem_cache_t *buffer_head_cachep; #else static request_queue_t *plugged_queue; -static inline void bdev_flush_queue(request_queue_t *q) +static inline void flush_plugged_queue(void) { - if ( q->unplug_fn != NULL ) - q->unplug_fn(q); + request_queue_t *q = plugged_queue; + if ( q != NULL ) + { + if ( q->unplug_fn != NULL ) + q->unplug_fn(q); + blk_put_queue(q); + plugged_queue = NULL; + } } #endif @@ -187,11 +193,7 @@ static int blkio_schedule(void *arg) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) run_task_queue(&tq_disk); #else - if ( plugged_queue != NULL ) - { - bdev_flush_queue(plugged_queue); - plugged_queue = NULL; - } + flush_plugged_queue(); #endif } } @@ -516,8 +518,8 @@ static void dispatch_rw_block_io(blkif_t *blkif, blkif_request_t *req) if ( (q = bdev_get_queue(bio->bi_bdev)) != plugged_queue ) { - if ( plugged_queue != NULL ) - bdev_flush_queue(plugged_queue); + flush_plugged_queue(); + blk_get_queue(q); plugged_queue = q; } -- 2.30.2